package org.l.mybatis.core.mapper;

import java.util.Collection;
import java.util.List;

import org.l.mybatis.core.annotation.ParamOrder;
import org.l.mybatis.core.annotation.ParamSelect;
import org.l.mybatis.core.annotation.SqlsourceDelete;
import org.l.mybatis.core.annotation.SqlsourceInsert;
import org.l.mybatis.core.annotation.SqlsourceSelect;
import org.l.mybatis.core.annotation.SqlsourceUpdate;

/**
 * @author 阿旺
 * @version 2017年11月6日 下午9:09:11
 */
public interface SimpleMapper<T> {

    /**
     * 根据主主键条件或其他字段删除一个或多个记录
     * 
     * @param t
     * @return
     */
    @SqlsourceDelete
    int deleteOneOrMore(T t);

    /**
     * 插入单个数据
     * 
     * @param t
     * @return
     */
    @SqlsourceInsert
    int insertOne(T t);

    @SqlsourceInsert
    int insertList(Collection<T> list);

    @SqlsourceSelect
    T selectOne(T t);

    @SqlsourceSelect
    List<T> selectList(@ParamSelect T t, @ParamOrder String order);

    @SqlsourceUpdate
    int updateOne(T t);

}
